序列场景案例:每日签到
这篇文章我们将会介绍一个 Web Fuzzer 序列的实际应用案例:每日签到。我们以某个网站的签到为例,我们先来看看它的登录逻辑:
可以看到,登录成功后显示登录成功信息,并且设置了一些cookie。
在登录后,在用户中心点击签到,使用yakit的 MITM 模块拦截请求,我们可以看到签到的请求如下:
可以看到,我们发送了一个post请求,行为是qiandao,然而还有一个nonce的参数,它是一个长度为9的数字字母的字符串。
nonce是WordPress中用于验证的机制,它通常用于保护请求防止被滥用(例如爆破,CSRF等)。nonce的值是随机的,虽然它并不是一次性的,但是它的生命周期很短,所以我们需要先获取nonce的值,然后再发送签到请求。
我们来看看要如何获取nonce值,它一般存在于页面的源码中,我们使用 Web Fuzzer 序列拼接登录和访问用户中心的请求,拿到用户中心页面的响应,可以找到它的nonce值:
接下来我们需要使用数据提取器来提取这个值,我们使用xpath来提取,由于文档结构比较简单,我们只需要简单地提取所有button下的data-nonce即可:
最后一步,我们使用 Web Fuzzer 序列来实现整个签到,顺序如下:
- 登录请求
- 获取签到所需nonce值(继承cookie)
- 使用获取到的nonce值(继承变量和cookie),其中第三个请求使用到第二个请求的变量:
{{p(nonce)}}
构造好 Web Fuzzer 序列后,我们发送请求,可以看到成功签到,至此我们就可以利用这个 Web Fuzzer 序列一键签到了: